export default function(name, url) {
  return new Promise(function(resolve, reject) {
    createfilepath(name).then(function(fileURL) {
      downloadfile(url, fileURL).then(function(entryURL) {
        openfile(entryURL).then(function() {
          resolve()
        }).catch(function(err) {
          reject(err)
        })
      }).catch(function(err) {
        reject(err)
      })
    }).catch(function(err) {
      reject(err)
    })

  })
}

function createfilepath(name) {
  return new Promise(function(resolve, reject) {
    // LocalFileSystem.PERSISTENT  // 永久目录
    // LocalFileSystem.TEMPORARY  // 临时目录
    window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs) {
      // exclusive 如果存在则抛出错误（exclusive:true）
      fs.root.getFile(name, { create: true, exclusive: false }, function(fileEntry) {
        resolve(fileEntry.nativeURL)
      }, function(err) {
        reject(err)
      });
    }, function(err) {
      reject(err)
    })
  })
}

function downloadfile(url, fileURL) {
  return new Promise(function(resolve, reject) {
    new FileTransfer().download(
      encodeURI(window.baseUrl + url),
      fileURL,
      function(entry) {
        resolve(entry.toURL())
      },
      function(err) {
        reject(err)
      }
    )
  })
}

function openfile(entryURL) {
  return new Promise(function(resolve, reject) {
    cordova.plugins.fileOpener2.open(entryURL, 'application/vnd.android.package-archive', {
      success: function() {
        resolve()
      },
      error: function(err) {
        reject(err)
      }
    })
  })
}